package com.halfsword.creativecraft.modules.interfaces;

import com.halfsword.creativecraft.modules.BaseFluidTank;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.common.util.LazyOptional;

/**
 * 流体处理功能接口
 * 提供流体槽位管理功能的模块应实现此接口
 */
public interface IFluidHandlerFacet extends IMachineModule {

    /**
     * 获取流体槽数组
     * @return BaseFluidTank数组
     */
    BaseFluidTank[] getFluidTanks();

    /**
     * 获取流体处理器
     * @return IFluidHandler实例的LazyOptional包装
     */
    LazyOptional<IFluidHandler> getFluidHandler();

    /**
     * 获取总流体量
     * @return 总流体量（mB）
     */
    default int getTotalFluidAmount() {
        int total = 0;
        for (BaseFluidTank tank : getFluidTanks()) {
            total += tank.getFluidAmount();
        }
        return total;
    }

    /**
     * 获取总容量
     * @return 总容量（mB）
     */
    default int getTotalCapacity() {
        int total = 0;
        for (BaseFluidTank tank : getFluidTanks()) {
            total += tank.getCapacity();
        }
        return total;
    }

    /**
     * 检查是否有足够的流体
     * @param amount 需要的流体量
     * @return 是否有足够的流体
     */
    default boolean hasEnoughFluid(int amount) {
        return getTotalFluidAmount() >= amount;
    }

    /**
     * 检查是否有空余容量
     * @param amount 需要存入的流体量
     * @return 是否有足够的空余容量
     */
    default boolean hasEnoughCapacity(int amount) {
        return getTotalCapacity() - getTotalFluidAmount() >= amount;
    }
}